package com.youlv.yl.util;

import com.youlv.yl.config.RedisKeyConfig;
import com.youlv.yl.config.SystemConfig;

/**
 * @author fenghe
 * @date 2022/1/10 15:39
 */
public class TokenUtils {

    /** 实现唯一登陆*/
    public static String createToken(String phone, String uid) {
        // 1.校验当前手机号是否在线
        if(JedisUtils.exists(RedisKeyConfig.USER_PHONE + phone)) {
            // 2.是否挤掉
            // 存在，账号已在线，挤掉，记录挤掉的信息，推送消息到指定设备(极光推送)

        }
        // 3.生成令牌
        String token = JwtUtils.createToken(phone);
        // 4.存储令牌
        JedisUtils.addString(RedisKeyConfig.USER_PHONE + phone, token, RedisKeyConfig.USER_TOKEN_TIME);
        JedisUtils.addString(RedisKeyConfig.USER_TOKEN + token, uid, RedisKeyConfig.USER_TOKEN_TIME);
        // 验证之前有没有记录过uid和对应的手机号
        if(!JedisUtils.existsHash(RedisKeyConfig.USER_UID_PHONE, uid)) {
            JedisUtils.addHash(RedisKeyConfig.USER_UID_PHONE, uid, phone);
        }
        // 5.返回令牌
        return token;
    }

    /** 通过token获取当前用户id*/
    public static Long getUidByToken(String token) {
        return Long.parseLong(JedisUtils.getString(RedisKeyConfig.USER_TOKEN + token));
    }
}
